import router from "../router"
import $bus from "../utils/bus"
// 全局前置钩子:beforeEach
// 只要进入页面之前都会调用，不加条件，会进入死循环

// 返回值：
// 1.false 阻止路由的进入
// 2.返回一个路径对象，终止进入to的路径，转而进入return的路径
// 需求：用户未登录的情况下，不允许访问其他页面(判断本地是否有token,如果有就放行，如果没有就重新调转到登录页)
// 如果登入了，就可以访问其他页面
router.beforeEach((to,from)=>{
    console.log('beforeEach-to===',to);
    console.log('beforeEach-from===',from);
    let token = sessionStorage.getItem('qf-token')
    if(!token){
        // 没有token,说明用户没有登录
        if(to.path!=='/login'){
            // 没登录，访问的还不是登录页，那么重新给他调转到登录页
            return{
                path:"/login"
            }
        }
    }
    // 点击mine进入discover中
    // if(to.path==="/mine"){
    //     return {
    //         path:"/discover"
    //     }
    // }
    // 会无限循环
    // return {
    //     path:"/mine"
    // }
})

 // 全局后置钩子
 // 路由元信息：meta，每个路由都有一个meta属性，可以给路由配置添加一些额外的标识和属性
 router.afterEach((to,from,failure)=>{
    console.log('afterEach-to===',to);
    console.log('afterEach-from===',from);
    // console.log('failure===',failure);
    // 总线传参，App.vue和guard之间传递面包屑的数据
    // 通过to.match属性，来获取面包屑需要的数据
    $bus.$emit('breadChange',to.matched)
})


// 全局解析守卫
router.beforeResolve((to,from) => {
    console.log('beforeResolve-to===',to);
    console.log('beforeResolve-from===',from);
})
// 执行顺序
// beforeEach-to
// beforeEach-from
// beforeResolve-to
// beforeResolve-from
// afterEach-to
// afterEach-from

